package com.xxx.mybaitis;

import java.sql.SQLException;
import java.util.List;

/**
 * 数据库连接对象
 */
public interface SqlSession {
	
	/**
	 * 获取mapper对象
	 *
	 * @param type
	 *            对象的类型
	 * @return T
	 */
	<T> T getMapper(Class<T> type);
	
	/**
	 * 获取sqlSession对象里的configuration对象
	 * @return
	 */
	Configuration getConfiguration();

	/**
	 * 根据传入的条件查询单一结果
	 *
	 * @param statement
	 *            方法对应的sql语句，namespace + id
	 * @param parameter
	 *            要传入到sql语句中的查询参数
	 * @return T
	 */
	<T> T selectOne(String statement, Object parameter);

	/**
	 * 查询集合
	 *
	 * @param statement
	 *            方法对应的sql语句，namespace + id
	 * @param parameter
	 *            要传入到sql语句中的查询参数
	 * @return java.util.List<E>
	 */
	<E> List<E> selectList(String statement, Object parameter);
	
	/**
	 * 插入
	 * @param statement
	 * 				方法对应的sql语句，namespace + id
	 * @param parameter
	 * 				要传入到sql语句中的参数
	 * @return
	 * @throws SQLException 
	 */
	int insert(String statement, Object parameter) throws SQLException;
	
	/**
	 * 修改
	 * @param statement
	 * 				方法对应的sql语句，namespace + id
	 * @param parameter
	 * 				要传入到sql语句中的参数
	 * @return
	 * @throws SQLException 
	 */
	int update(String statement, Object parameter) throws SQLException;
	
	/**
	 * 删除
	 * @param statement
	 * 				方法对应的sql语句，namespace + id
	 * @param parameter
	 * 				要传入到sql语句中的参数
	 * @return
	 * @throws SQLException
	 */
	int delete(String statement, Object parameter) throws SQLException;

}
